home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
windows
/
win31
/
macsyma.arj
/
MACSDEMO.EXE
/
LAPLACE.OUT
< prev
next >
Wrap
Text File
|
1993-09-14
|
4KB
|
62 lines
(c1) /* Demonstration of the Laplace Transform capability in MACSYMA */
laplace(exp(-b*t)*cos(w*t),t,s);
|$label(0,15,Times New Roman,$(d1$))$q(s$in( + )b,$sup(w,2)$in( + )$sup(s,2)$in( + )2$in( )b$in( )s$in( + )$sup(b,2))
(c2) /* Use LAPLACE to solve simultaneous differential equations.
(See also EXAMPLE(DESOLVE); for a quicker approach.) */
assume(a>0,s>0)$
(c3) diff_eq1:3*'diff(f(x),x,2)-2*'diff(g(x),x)=sin(x);
|$label(0,15,Times New Roman,$(d3$))3$in( )$q($sup(d,2),d$sup(x,2))$paren(f$paren(x))$hinge()$in( - )2$in( )$q(d,dx)$paren(g$paren(x))$hinge()$in( = )sin$paren(x)
(c4) diff_eq2:a*'diff(g(x),x,2)+'diff(f(x),x)=a*cos(x);
|$label(0,15,Times New Roman,$(d4$))a$in( )$q($sup(d,2),d$sup(x,2))$paren(g$paren(x))$hinge()$in( + )$q(d,dx)$paren(f$paren(x))$hinge()$in( = )a$hinge()$in( )cos$paren(x)
(c5) atvalue(g(x),x=0,1)$
(c6) atvalue('diff(f(x),x),x=0,0)$
(c7) atvalue('diff(g(x),x),x=0,1)$
(c8) lap_eq1:laplace(diff_eq1,x,s);
|$label(0,15,Times New Roman,$(d8$))3$in( )$paren($sup(s,2)$in( )laplace$paren(f$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$in( - )f$paren(0)$in( )s,$(,$))$hinge()$in( - )2$in( )$paren(s$in( )laplace$paren(g$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$in( - )1,$(,$))$hinge()$in( = )$q(1,$sup(s,2)$in( + )1)
(c9) lap_eq2:laplace(diff_eq2,x,s);
|$label(0,15,Times New Roman,$(d9$))a$in( )$paren($sup(s,2)$in( )laplace$paren(g$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$in( - )s$in( - )1,$(,$))$hinge()$in( + )s$in( )laplace$paren(f$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$hinge()$in( - )f$paren(0)$hinge()$in( = )$q(a$in( )s,$sup(s,2)$in( + )1)
(c10) linsolve([lap_eq1,lap_eq2],['laplace(f(x),x,s),'laplace(g(x),x,s)]);
|$label(0,15,Times New Roman,$(d10$))$open([)laplace$paren(f$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$hinge()$in( = )$q(3$in( )f$paren(0)$in( )a$in( )$sup(s,4)$in( + )$paren(f$paren(0)$in( )$paren(3$in( )a$in( + )2,$(,$))$in( + )2$in( )a,$(,$))$in( )$sup(s,2)$in( + )3$in( )a$in( )s$in( + )2$in( )a$in( + )2$in( )f$paren(0),3$in( )a$in( )$sup(s,5)$in( + )$paren(3$in( )a$in( + )2,$(,$))$in( )$sup(s,3)$in( + )2$in( )s)$ina($, )$hinge()laplace$paren(g$paren(x)$ina($, )$hinge()x$ina($, )$hinge()s)$hinge()$in( = )$q(3$in( )a$in( )$sup(s,4)$in( + )3$in( )a$in( )$sup(s,3)$in( + )$paren(6$in( )a$in( + )2,$(,$))$in( )$sup(s,2)$in( + )3$in( )a$in( )s$in( + )1,3$in( )a$in( )$sup(s,5)$in( + )$paren(3$in( )a$in( + )2,$(,$))$in( )$sup(s,3)$in( + )2$in( )s)$close(])
(c11) ilt(%,s,x);
|$label(0,15,Times New Roman,$(d11$))$open([)f$paren(x)$hinge()$in( = )$q($q(27$in( )$sup(a,5$in(/)2)$in( )sin$paren($q($sqrt(6)$in( )x,3$in( )$sqrt(a))),$sqrt(6)$in( )$paren(3$in( )a$in( - )2,$(,$)))$in( - )3$in( )$sup(a,2)$in( )cos$paren($q($sqrt(6)$in( )x,3$in( )$sqrt(a))),3$in( )a)$hinge()$in( - )$q(3$in( )a$in( )sin$paren(x),3$in( )a$in( - )2)$hinge()$in( + )a$hinge()$in( + )f$paren(0)$ina($, )$hinge()g$paren(x)$hinge()$in( = )$q($q(9$in( )$sup(a,3$in(/)2)$in( )sin$paren($q($sqrt(6)$in( )x,3$in( )$sqrt(a))),$sqrt(6))$in( + )$q(27$in( )$sup(a,2)$in( )cos$paren($q($sqrt(6)$in( )x,3$in( )$sqrt(a))),6$in( )a$in( - )4),3$in( )a)$hinge()$in( - )$q($paren(3$in( )a$in( + )1,$(,$))$in( )cos$paren(x),3$in( )a$in( - )2)$hinge()$in( + )$q(1,2)$close(])
(c12) /* User-defined extension to the Laplace Transform capability.
Begin with an extension to Bessel Functions.
We define a function that produces the transform of J0(A*X) . */
besseltrans(f,x,s):= block([c],
if inpart(f,0) # 'j0
then 'laplace(f,x,s)
else (c: inpart(f,1),
c: bothcoef(c,x),
if second(c) = 0
then 1/sqrt(s^2+first(c)^2)
else 'laplace(f,x,s)))$
(c13) /* LAPLACE looks at the LAPLACE property of the function
it is trying to transform, so we place BESSELTRANS there: */
put(j0,'besseltrans,'laplace)$
(c14) /* Now test it: */
laplace(j0(2*t)-2*j0(t),t,s);
|$label(0,15,Times New Roman,$(d14$))$q(1,$sqrt($q(4,$sup(s,2))$in( + )1)$in( )s)$hinge()$in( - )$q(2,$sqrt($q(1,$sup(s,2))$in( + )1)$in( )s)
(c15) /* Clean Up */
(forget(a>0,s>0),remvalue(diff_eq1,diff_eq2,lap_eq1,lap_eq2),
remove([f,g],atvalue),remfunction(besseltrans),rem(j0,'laplace))$